Skip to content

A map is read for the modifiers you decided you cannot take - #40

Merged
JIRPOS merged 4 commits into
masterfrom
map-check
Aug 12, 2026
Merged

A map is read for the modifiers you decided you cannot take#40
JIRPOS merged 4 commits into
masterfrom
map-check

Conversation

@JIRPOS

@JIRPOS JIRPOS commented Aug 12, 2026

Copy link
Copy Markdown
Owner

Release notes

ADDED: Ctrl+Shift+D over a map opens a popup listing every modifier it rolled and the verdict you gave each, with the rating control on the spot — a click walks a modifier through safe, dangerous and deadly, a right-click puts it back to unrated.
ADDED: A single line leads that popup with the strongest thing true of the map. One deadly modifier decides it however much it is outnumbered.
ADDED: Rating tables are profiles you make, copy and delete. The one in use is picked in the popup or in Settings and is remembered until you change it.
ADDED: A Map check tab in Settings lists every modifier a map can roll, searchable, for the one sitting where you pre-fill the table rather than filling it in by playing.
ADDED: That list takes Path of Exile's own item-search syntax — quoted terms, ! for what you refuse, real regular expressions, and anchors that hold to a printed line. A ? beside the box says so in examples.
ADDED: A map search string you already use can be turned into verdicts across the whole list at once, shown first as the rows it would write and saved only when you accept them.
ADDED: A verdict is about a whole modifier, however many lines it prints, and holds for every modifier that carries those lines. Implicits are rated like anything else.
REMOVED: Switching profile automatically to match the character you are playing, which the plan listed as a maybe. The game's log never names the character you selected, and the lines that do carry a name name your party as readily as you, so there is nothing to switch on. The profile you pick is remembered instead.

Review notes

ADDED: Ctrl+Shift+D over a map opens a popup listing every modifier it rolled, with the verdict the profile in use gives each; a click walks a row through safe, dangerous, deadly and back, and a right-click puts it straight back to unrated.
ADDED: A one-line outlook leads the popup, reporting the strongest thing true of the map.

  • One deadly modifier decides it whatever it is outnumbered by. Averaging that away would be exactly the confident wrong answer this codebase exists to avoid.

ADDED: Rating tables are profiles, a JSON file each under <config>/map-profiles/, made and unmade from Settings, with the directory as the authority over the config's list.
ADDED: A Map Check settings tab lists every modifier the bundle's pool publishes, searchable, four verdict buttons to an affix, for the one session where somebody pre-fills the table.
ADDED: The search box takes Path of Exile's own item-search syntax — quoted terms, ! to negate, real regular expressions, ^ and $ anchored to a printed line — and a ? beside it says so in six examples.
ADDED: A pasted map search string can be turned into verdicts across the whole pool, shown as the rows it would write and saved only on Accept.
ADDED: en-mod-pools.ndjson and its index load as optional bundle assets behind has_mod_pools(), so a bundle published before they existed keeps working.
ADDED: mod_domain on base types and item classes, and GameData::mod_domain_for, which is what says a chart rolls from a different pool than the map it is sailed from.

  • Ask the base first and its class second: trade files all 491 maps under one proxy row sitting with the stackable currency, so a map's own record states no domain at all.

ADDED: mapcheck_test and hotkey_test.

CHANGED: A verdict is keyed on an affix — its whole sorted set of stat refs — rather than on any one wording.

  • 21 of the pool's wordings sit on more than one affix and 50 affixes grant more than one, so a key per wording cannot tell two decisions apart: rating Impaling also rated the more-currency line it shares with fourteen others.
  • Never on a printed line, which is language-dependent the moment a localised bundle exists.

CHANGED: Implicits are rated like anything else instead of being printed above the list.

  • They were left out on the argument that an implicit is what the base came with rather than what it rolled — true of a Nightmare map saying it is one, false of the Vaal corruption implicits, which roll and which the pool carries.

CHANGED: An affix granted by more than one pool is one row, not one per pool, since the verdict key holds no domain and the rows could never disagree. 270 pool entries, 227 rows.
CHANGED: A verdict lent by a shorter affix is drawn faintly rather than not at all, so the propagation rule is visible before a map opens; pressing a button still writes only this affix.
CHANGED: The profile in use is written the moment it changes, from the popup as well as from Settings.

  • The selection lived in the live config object that only the Settings Save button commits, so a switch made in the popup was lost on the next launch. Saving that object here would have pushed out a league or an account name still being typed, so the file is re-read and the two map-check fields laid over it.

CHANGED: PPC_DEV_MAP's fallback to PPC_DEV_ITEM is spelled out instead of using ?:.

  • A GNU extension, so the Windows job failed to compile app.cpp while Linux built it clean. It was the only one in the tree.

CHANGED: The test bundle slice carries a mod pool, mod domains and the stats behind a map's modifiers.
CHANGED: PRIVACY.md lists the profile files and what config.json now holds of them.
CHANGED: ROADMAP marks 0.7 shipped and its Might for the search-string import as built. VERSION is untouched; the release workflow owns it.
CHANGED: docs/roadmap.md gains a Decided against section, and map-check.md the evidence behind its first entry.

REMOVED: the per-character auto-load rule, in all of it — App::auto_profile, apply_auto_profile and the set_screen hook that called it on the way into either screen that rates.

  • The game never writes the selected character's name to logs/LatestClient.txt. A full session on 3.29.2, from ***** LOG FILE OPENING ***** through login, character select and two zones, does not contain it once; the only three line shapes in the 48 MB history that carry a name (a level-up, a death, a channel message) name party members as readily as the local character. There is nothing to key a profile on, so this is closed rather than deferred — reopen it with a capture, not with reasoning.

REMOVED: Config::map_profile_by_character and its by_character object, on the read side as well as the write. A file still carrying one loads, keeps everything else, and drops the dead key on the next write.
REMOVED: the disabled Auto-load checkbox, its kClientLogSupported switch and both tooltips it could have shown, plus the two strings behind them.

🤖 Generated with Claude Code

JIRPOS added 4 commits August 12, 2026 12:16
ADDED: Ctrl+Shift+D over a map opens a popup listing every modifier it rolled, with the verdict
the profile in use gives each; a click walks a row through safe, dangerous, deadly and back, and
a right-click puts it straight back to unrated.

ADDED: A one-line outlook leads the popup, reporting the strongest thing true of the map.

- One deadly modifier decides it whatever it is outnumbered by. Averaging that away would be
  exactly the confident wrong answer this codebase exists to avoid.

ADDED: Rating tables are profiles, a JSON file each under `<config>/map-profiles/`, made and
unmade from Settings, with the directory as the authority over the config's list.

ADDED: A Map Check settings tab lists every modifier the bundle's pool publishes, searchable,
four verdict buttons to an affix, for the one session where somebody pre-fills the table.

ADDED: The search box takes Path of Exile's own item-search syntax — quoted terms, `!` to
negate, real regular expressions, `^` and `$` anchored to a printed line — and a `?` beside it
says so in six examples.

ADDED: A pasted map search string can be turned into verdicts across the whole pool, shown as
the rows it would write and saved only on Accept.

ADDED: `en-mod-pools.ndjson` and its index load as optional bundle assets behind
`has_mod_pools()`, so a bundle published before they existed keeps working.

ADDED: `mod_domain` on base types and item classes, and `GameData::mod_domain_for`, which is
what says a chart rolls from a different pool than the map it is sailed from.

- Ask the base first and its class second: trade files all 491 maps under one proxy row sitting
  with the stackable currency, so a map's own record states no domain at all.

ADDED: `mapcheck_test` and `hotkey_test`.

CHANGED: A verdict is keyed on an affix — its whole sorted set of stat `ref`s — rather than on
any one wording.

- 21 of the pool's wordings sit on more than one affix and 50 affixes grant more than one, so a
  key per wording cannot tell two decisions apart: rating `Impaling` also rated the more-currency
  line it shares with fourteen others.
- Never on a printed line, which is language-dependent the moment a localised bundle exists.

CHANGED: Implicits are rated like anything else instead of being printed above the list.

- They were left out on the argument that an implicit is what the base came with rather than what
  it rolled — true of a Nightmare map saying it is one, false of the Vaal corruption implicits,
  which roll and which the pool carries.

CHANGED: An affix granted by more than one pool is one row, not one per pool, since the verdict
key holds no domain and the rows could never disagree. 270 pool entries, 227 rows.

CHANGED: A verdict lent by a shorter affix is drawn faintly rather than not at all, so the
propagation rule is visible before a map opens; pressing a button still writes only this affix.

CHANGED: The profile in use is written the moment it changes, from the popup as well as from
Settings.

- The selection lived in the live config object that only the Settings Save button commits, so a
  switch made in the popup was lost on the next launch. Saving that object here would have pushed
  out a league or an account name still being typed, so the file is re-read and the two
  map-check fields laid over it.

CHANGED: The test bundle slice carries a mod pool, mod domains and the stats behind a map's
modifiers.

CHANGED: PRIVACY.md lists the profile files and what config.json now holds of them.
REMOVED: the per-character auto-load rule, in all of it — `App::auto_profile`,
`apply_auto_profile` and the `set_screen` hook that called it on the way into either
screen that rates.

- The game never writes the selected character's name to `logs/LatestClient.txt`. A
  full session on 3.29.2, from `***** LOG FILE OPENING *****` through login, character
  select and two zones, does not contain it once; the only three line shapes in the
  48 MB history that carry a name (a level-up, a death, a channel message) name party
  members as readily as the local character. There is nothing to key a profile on, so
  this is closed rather than deferred.

REMOVED: `Config::map_profile_by_character` and its `by_character` object, on the read
side as well as the write. A file still carrying one loads, keeps everything else, and
drops the dead key on the next write.
REMOVED: the disabled **Auto-load** checkbox, its `kClientLogSupported` switch and both
tooltips it could have shown, plus the two strings behind them.
CHANGED: `select_map_profile` persists unconditionally — the profile last picked, in the
popup or in Settings, is the one the next launch opens on.
CHANGED: ROADMAP marks 0.7 shipped and its **Might** for the search-string import as
built. VERSION is untouched; the release workflow owns it.
CHANGED: docs/roadmap.md gains a **Decided against** section, and map-check.md the
evidence behind this one — reopen it with a capture, not with reasoning.
…r's words

CHANGED: `PPC_DEV_MAP`'s fallback to `PPC_DEV_ITEM` is spelled out instead of using `?:`.

- A GNU extension, so the Windows job failed to compile `app.cpp` while Linux built it
  clean. It was the only one in the tree.

CHANGED: ROADMAP's search-string import paragraph is rewrapped to the file's width, its
footnote reads as a footnote rather than a bullet, and one typo is fixed.
….json

The one conflict was PRIVACY.md's `config.json` row, which each side extended: master
added the status indicator's switch, this branch the map-check profile names and which
is in use. Both are on the row now, and the `map-profiles/` row below it is untouched.
@JIRPOS
JIRPOS merged commit 59206a3 into master Aug 12, 2026
9 checks passed
@JIRPOS
JIRPOS deleted the map-check branch August 12, 2026 11:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant